Computer-implemented data storage systems typically comprise various types of data storage in which data is stored on behalf of host computer systems. Storage controls or controllers control access to data storage media and memories in response to read and write requests. The storage controls may direct the data in accordance with data storage devices such as cache, non-volatile storage, RAID (redundant array of independent disks), JBOD (just a bunch of disks), etc. arranged into various redundancy, access speed and security levels.
As an example, an International Business Machines Corp. (IBM®) ESS (Enterprise Storage Server) such as a DS8000™ has redundant clusters of computer entities, cache, non-volatile storage, etc., called “central electronics complexes” or “CECs”.
Within a data storage system, a cache comprises a fast memory or storage device used to store data or instructions that were accessed recently, are accessed frequently, or are likely to be accessed in the near future. Data stored in cache can be accessed quickly instead of being fetched or recomputed, saving both time and resources.
Cache can be provided in multiple levels. For example, a cache data storage system may comprise both a “first” or “primary” cache and a “secondary” cache. Typically, the first cache has faster access and is more costly per unit of data than a secondary cache, and the secondary cache has greater storage capacity than the first cache. For example, a first cache comprises dynamic random access memory (DRAM), while the secondary cache comprises flash memory solid-state drives such as “Flash_Cache” (TM International Business Corp.). When accessing data, a computing system or device may first look for data in the first cache and, if the data is not present there, look for the data in the secondary cache. When writing data, a computing system or device may write data to the first cache. If data in the first cache is not accessed promptly or frequently, this data may be demoted to the secondary cache. If data is not accessed promptly or frequently from the secondary cache, it may be evicted to slower access speed data storage such as RAID, JBOD, etc.
Typically, a LRU (least recently used) algorithm is employed to select which data to demote to the next lower level.